The ability to quickly and efficiently process video streams has grown in importance, with portable consumer electronic products incorporating more and more multimedia features. Mobile phones, for example, can be used to retrieve, view and transmit multimedia content. However, while the capabilities of portable devices continue to increase, such devices are still somewhat limited relative to more powerful platforms such as personal computers. Data transmission and retrieval rates may also be a factor. The amount of image (e.g., video) data is usually more of a consideration than the amount of audio data.
The data is often encoded (compressed) to facilitate storage and streaming, and then decoded (decompressed) for playback (e.g., display). Video data may be compressed using a Moving Pictures Experts Group (MPEG) scheme, for example. By encoding a video sequence, the number of bits needed to represent the video sequence can be greatly reduced.
In a typical video sequence, the content of one frame, or a least a portion of that frame, may be very similar to that of another frame. This is commonly referred to as “temporal redundancy.” A compression technique commonly referred to as “motion compensation” is employed to exploit temporal redundancy. If content in a frame is closely related to that of another (reference) frame, it is possible to accurately represent, or predict, the content of the frame using the reference frame.
The frames are partitioned into blocks of pixels (e.g., a macroblock of 16×16 pixels). The movement of a block that, apart from being moved to a different position, is not otherwise transformed significantly from a corresponding block in the reference frame, can be represented using a motion vector. For example, a motion vector of (3,4) can mean that the block has moved three pixels to the left and four pixels upward relative to the position of its corresponding block in the reference frame. Motion compensation refers to the application of a motion vector to a decoded (decompressed) block to construct a new block (or frame or image).
Compression standards continue to evolve, in order to achieve higher compression rates without compromising the quality of the reconstructed video. A recent compression standard that is becoming more widely used is known as H.264 or MPEG-4 Part 10, and is known more formally as Advanced Video Coding (AVC). Earlier standards such as MPEG-4 (which is different from MPEG-4 Part 10) continue to be used.